print("金融术语标准化任务的完成步骤：从数据清洗到术语提取、术语映射、术语验证，再到存储和管理术语")
print("数据清洗是术语标准化的第一步。我们需要去除文档中的噪声，如HTML标签、特殊字符、多余的空格等。")
import spacy
# 加载spaCy的英语模型
nlp = spacy.load(r"D:\ideaSpace\MyPython\models\zh_core_web_sm")
def extract_terms(text):
    doc = nlp(text)
    terms = [token.text for token in doc if token.pos_ == 'NOUN']
    return terms

print("术语提取是术语标准化的核心步骤。我们可以使用NLP技术来提取术语")
# 示例
text = "这是一个包含多个金融术语的文本，例如股票、债券和基金。"
terms = extract_terms(text)
print(terms)


# 假设我们有一个标准术语的字典
standard_terms = {
    "stock": "股票",
    "bond": "债券",
    "fund": "基金"
}

def map_terms(terms):
    mapped_terms = [standard_terms.get(term, term) for term in terms]
    return mapped_terms

print("术语映射是将提取的术语映射到标准术语的过程。我们可以使用字典或数据库来实现术语映射。")
# 示例
mapped_terms = map_terms(terms)
print(mapped_terms)


def validate_terms(mapped_terms):
    # 这里可以添加人工验证或自动化验证的逻辑
    return mapped_terms

print("术语验证是确保映射后的术语是正确的。我们可以使用人工验证或自动化验证方法")
# 示例
validated_terms = validate_terms(mapped_terms)
print(validated_terms)


import sqlite3
print("最后，我们需要将标准化的术语存储到数据库中，以便后续使用")
# 创建数据库连接
conn = sqlite3.connect('data/financial_terms.db')
c = conn.cursor()

# 创建表
c.execute('''CREATE TABLE IF NOT EXISTS terms
             (term TEXT, standard_term TEXT)''')

# 插入数据
for term, standard_term in zip(terms, mapped_terms):
    c.execute("INSERT INTO terms VALUES (?, ?)", (term, standard_term))

# 提交更改并关闭连接
conn.commit()
conn.close()
